package com.shiro.token;

/**
 * 自定义的shiro接口token，可以通过这个类将string的token转型成AuthenticationToken，可供shiro使用
 * 注意：需要重写getPrincipal和getCredentials方法，因为是进行三件套处理的，没有特殊配置shiro无法通过这两个方法获取到用户名和密码，需要直接返回token，之后交给JwtUtil去解析获取。
 * （当然了，可以对realm进行配置HashedCredentialsMatcher，这里就不这么处理了）
 * @author WxrStart
 * @create 2022-05-23 20:22
 */
import com.utils.JWTUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.AuthenticationToken;

@Slf4j
public class JWTToken  implements AuthenticationToken {

    private String token;
    //登录类型，区分admin,user
    private String loginType;

    private String email;

    public JWTToken(String token) {
        log.info("JWTToken的构造函数调用了");
        this.token = token;
        this.email = JWTUtils.getClaimFiled(token, "email");
        this.loginType=JWTUtils.getClaimFiled(token,"userRole");
    }

    public String getLoginType() {
        log.info("JWTToken的getLoginType调用了");
        return loginType;
    }

    public void setLoginType(String loginType) {
        this.loginType = loginType;
    }

    @Override
    public String getPrincipal() {
        log.info("JWTToken的getPrincipal调用了");
        return token;
    }

    public String getEmail() {
        log.info("JWTToken的getEmail调用了");
        return email;
    }

    @Override
    public String getCredentials() {
        log.info("JWTToken的getCredentials调用了");
        return token;
    }


}
